热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

|zyciis|关于电子商城中购物车与货品库存存在的冲突问题,大家做这个功能的时候是如何来做的呢?

如我有货品A,现在库存为“1”,然后商城的功能是要保证用户购买了就要有货有如下设计1:当A会员将货品放入购物车的时候扣减库存,问题出现:这样的话A放进了购物车,但他可能不买,这个时候会
如我有货品A,现在库存为“1”,然后商城的功能是要保证用户购买了就要有货
有如下设计
1:当A会员将货品放入购物车的时候扣减库存,
问题出现:这样的话A放进了购物车,但他可能不买,
这个时候会员B他是想买的,但他放购物车的时候商城就会提示:库存不足
所以个人感觉这个方案不行
2:当在下订单的时候扣减库存
问题出现:其实这个问题和放进购物车是一样的道理,生成订单会员也非必付款
所以个人感觉这个方案也不行
3:当订单生成后,会员付款成功时扣减库存,而其他已下订单非付款的订单在支付的时候判断到库存不足时不让支付
(个人是很赞同这个方法的)
问题出现:因为网上支付中间要和第三方支付进行触,这个时候A,B会员同时付款(他们付款的时库存都判断通过)
但在付款成功的时候肯定会有一个会员有库存而别一个会员没库存,这样就造成了付了款,但没有货

我的意思是用第3个方法,如果他们付了款没有货的话我们可以进行缺货通知或退款
但现在客户要求就是说会员订单支付成功就一定得要有货

那我要如何来处理,因为想不到办法
如果没有办法,那如何来说服客户呢?

现阶段网上商城主流的处理方式又是怎么样的呢?

谢谢

16 个解决方案

#1


成交扣一次,未成交不让扣但可以预定。

#2


你的第一个问题,纠正你的错误,你放入购物车,不代表你购物成功,所以你库存根本就没有编号。何来所谓的库存不足!
你的第二个问题,这个和我回答的第二个问题一模一样,只有在网上支付成功后,才算是成功,库存才会减少。
你的第三个问题,你想的问题根本不存在,支付宝支付,本来就属于单线程支付,只有付完一个,再接着下一个,没有你说的,即付款这个又付款那个!!!

怎么学的你!!!

#3


第一个和第二个是肯定不行的了!!

你可以在会员付款成功后把库存减掉,因为买家已经付款了,买家确认已经收货,那么这个订单就算完成。

如果买家退货了,你要把相应的库存还得加回去。

像你说的,AB两人同时付款的几率会很小的,你可以在后台程序处再加一个判断,判断付款时到底还有没有库存。


#4


像你说的,AB两人同时付款的几率会很小的,你可以在后台程序处再加一个判断,判断付款时到底还有没有库存。
--------------------

但是我就不知道现在怎么写这一段:“你可以在后台程序处再加一个判断”
因为买家付款的时候这个时候页面已经是去到第三方支付平台,我没有办法在他那边支付的时候告诉他已经没货了

#5


像你说的,AB两人同时付款的几率会很小的,你可以在后台程序处再加一个判断,判断付款时到底还有没有库存。
--------------------

但是我就不知道现在怎么写这一段:“你可以在后台程序处再加一个判断”
因为买家付款的时候这个时候页面已经是去到第三方支付平台,我没有办法在他那边支付的时候告诉他已经没货了

#6


前两个问题应该是没有问题的,不付款肯定不能算库存,购物车或订单中无论有多少个商品,在真正付款的时候都要重新计算库存并提示的

关于第三个问题,确实是存在的,尤其是抢购类商品,基本上每一个做电子商务的网站都会有并发问题,只是严重不严重而已,这个只能通过认为来控制,要么商家多备点货,要么跟客户沟通退款等等

#7


在转到第三方支付平台之前再加一个页面啊。在这个页面做下判断,然后再转向啊

#8


你可以想想去买牙膏。假如现在柜台上面只有一盒牙膏了。然后你拿了,后面来了一个人也要买牙膏,他看到牙膏没货了,但是你去结账的时候发现质量不行,又没买。结果就是你们都没买成。
所以说你只能做一个标识说这个货物已经被预定了。
就跟你去吃饭,就一个桌子了,没人坐,你刚准备坐下的时候,服务员说这个桌子被别人预定了。不管别人今天来不来吃饭,但是你去不能坐,除非此时别人打电话来说不吃了。

#9


学习学习。。

#10


你可以想想去买牙膏。假如现在柜台上面只有一盒牙膏了。然后你拿了,后面来了一个人也要买牙膏,他看到牙膏没货了,但是你去结账的时候发现质量不行,又没买。结果就是你们都没买成。
所以说你只能做一个标识说这个货物已经被预定了。
就跟你去吃饭,就一个桌子了,没人坐,你刚准备坐下的时候,服务员说这个桌子被别人预定了。不管别人今天来不来吃饭,但是你去不能坐,除非此时别人打电话来说不吃了。
-----------------------------------------------------------
如果你是现实的商场就可以这样
但是网上商城的话还有一个为会员保存购物车功能,那如果像上面会员把牙膏放进了购物车(购物车可以存放到他下次登录都有效),那别人就不用买了?


在转到第三方支付平台之前再加一个页面啊。在这个页面做下判断,然后再转向啊
---------------------
问题是我判断时是可以的,但是两个人都到第三方支付去了。这时就会出现他们都支付成功,但回来的时候只有一家有货

#11


前两个问题应该是没有问题的,不付款肯定不能算库存,购物车或订单中无论有多少个商品,在真正付款的时候都要重新计算库存并提示的

关于第三个问题,确实是存在的,尤其是抢购类商品,基本上每一个做电子商务的网站都会有并发问题,只是严重不严重而已,这个只能通过认为来控制,要么商家多备点货,要么跟客户沟通退款等等
--------------
说得非常有理
第一第二个方法是可以解决会员下单支付成功就有货,但是存在会员卡货的问题
但第三个方案的话就存在第三方支付时并发的问题


第四个方案是用户先存款到网站,然后由网站的预存款来支付,这种方式可以解决付款就有货
但存在会员不会预先存款到网站的问题,而且一段会员都不会这样做

#12


那按照LZ这么去想的话,并发问题是存在

有些东西技术上是很难控制的,就像6楼所说,去人为的线下解决了!!

#13


付完款才算是整个购物过程结束吧。

谁先给钱,就给谁。

有人花钱就行了。

#14


引用 11 楼 zyciis262 的回复:
前两个问题应该是没有问题的,不付款肯定不能算库存,购物车或订单中无论有多少个商品,在真正付款的时候都要重新计算库存并提示的

关于第三个问题,确实是存在的,尤其是抢购类商品,基本上每一个做电子商务的网站都会有并发问题,只是严重不严重而已,这个只能通过认为来控制,要么商家多备点货,要么跟客户沟通退款等等
--------------
说得非常有理
第一第二个方法是可以解决会员下单支付成功……


基本上并发问题比较难解决,我们公司在做团购,遇到特别热的单子都会有超过库存的情况发生。所以这个问题是正常的、可以预见、可以控制的问题,也就是允许存在的问题呵呵

#15


我放进购物车 不代表我要买 只是标识 只有真买 才会对库存产生影响

#16


支持8楼

推荐阅读
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 关于CMS收集器的知识介绍和优缺点分析
    本文介绍了CMS收集器的概念、运行过程和优缺点,并解释了垃圾回收器的作用和实践。CMS收集器是一种基于标记-清除算法的垃圾回收器,适用于互联网站和B/S系统等对响应速度和停顿时间有较高要求的应用。同时,还提供了其他垃圾回收器的参考资料。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • 深入理解Java虚拟机的并发编程与性能优化
    本文主要介绍了Java内存模型与线程的相关概念,探讨了并发编程在服务端应用中的重要性。同时,介绍了Java语言和虚拟机提供的工具,帮助开发人员处理并发方面的问题,提高程序的并发能力和性能优化。文章指出,充分利用计算机处理器的能力和协调线程之间的并发操作是提高服务端程序性能的关键。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
author-avatar
Candy王丫丫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有